_t_a_r_g_e_t Specifies the target texture, which must be either GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____1111DDDD,
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____2222DDDD, GGGGLLLL____DDDDEEEETTTTAAAAIIIILLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____2222DDDD____SSSSGGGGIIIISSSS, or GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____3333DDDD____EEEEXXXXTTTT.
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____SSSSGGGGIIIIXXXX, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____OOOOPPPPEEEERRRRAAAATTTTOOOORRRR____SSSSGGGGIIIIXXXX, or
Specifies the target texture, which must be either GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____1111DDDD,
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____2222DDDD, GGGGLLLL____DDDDEEEETTTTAAAAIIIILLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____2222DDDD____SSSSGGGGIIIISSSS, or GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____3333DDDD____EEEEXXXXTTTT.
Specifies the symbolic name of a texture parameter. _p_n_a_m_e can be
one of the following: GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMIIIINNNN____FFFFIIIILLLLTTTTEEEERRRR, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAGGGG____FFFFIIIILLLLTTTTEEEERRRR,
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____OOOOPPPPEEEERRRRAAAATTTTOOOORRRR____SSSSGGGGIIIIXXXX, or GGGGLLLL____SSSSHHHHAAAADDDDOOOOWWWW____AAAAMMMMBBBBIIIIEEEENNNNTTTT____SSSSGGGGIIIIXXXX.
_p_a_r_a_m_s
Specifies a pointer to an array where the value or values of _p_n_a_m_e
are stored.
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
Texture mapping is a technique that applies an image onto an object's
surface as if the image were a decal or cellophane shrink-wrap. The image
is created in texture space, with an (s, t, r) coordinate system. A
texture is a one-, two-, or three-dimensional image and a set of
parameters that determine how samples are derived from the image.
ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr assigns the value or values in _p_a_r_a_m_s to the texture
parameter specified as _p_n_a_m_e. _t_a_r_g_e_t defines the target texture, either
dimension 1 x 1. To define the mipmaps, call ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee1111DDDD,
ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee2222DDDD, ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee3333DDDD, ggggllllCCCCooooppppyyyyTTTTeeeexxxxIIIImmmmaaaaggggeeee1111DDDD, or
ggggllllCCCCooooppppyyyyTTTTeeeexxxxIIIImmmmaaaaggggeeee2222DDDD with the _l_e_v_e_l argument indicating the order
of the mipmaps. Level 0 is the original texture; level
max(n,m) is the final 1 x 1 mipmap.
A clipmap virtualizes a 2D mipmap by storing and using only a
portion of a full mipmap ``pyramid'' at any given time. In a
clipmap with N+1 levels numbered 0 (the base) through N (the
tip), each image level from B through N contains the full image
from the corresponding level of the complete mipmap. Each
image level from 0 through B-1 contains a subimage of the
corresponding level of the complete mipmap, called the _r_e_g_i_o_n
_o_f _i_n_t_e_r_e_s_t. The region of interest must be the same size in
all the levels 0 through B-1 - that is, precisely the same size
as the texture image at mipmap level B. For the clipmap to be
usable, only the region of interest need reside in texture
memory. When texture filtering requires texels (texture
elements) that are inside the region of interest for a level,
they are fetched in just the way they would be accessed for a
mipmap. When the required texels fall outside the region of
interest, then successively higher clipmap levels are queried
until one is found that contains texels at the appropriate
coordinates.
Since each 2D mipmap level usually contains four times as many
texels as the subsequent level, using a clipmap for a few of
the highest-resolution levels can reduce texture memory
requirements tremendously. In addition to reducing memory
requirements, clipmaps also have features that support paging
texture images into and out of texture memory. Clipmaps also
can be virtualized to support many more levels of detail than
ordinarily would be available. (See below for more information
on paging and virtualization.) Note that clipmaps may be used
only with borderless 2D textures.
_p_a_r_a_m_s supplies a function for minifying the texture as one of
the following:
GGGGLLLL____NNNNEEEEAAAARRRREEEESSSSTTTT
Returns the value of the texture element that is
nearest (in Manhattan distance) to the center of the
pixel being textured.
GGGGLLLL____LLLLIIIINNNNEEEEAAAARRRR Returns the weighted average of the two, four, or
eight texture elements that are closest to the center
of the pixel being textured. These can include
border texture elements, depending on the values of
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____SSSS, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____TTTT, and
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____RRRR, and on the exact mapping.
Sets the wrap parameter for texture coordinate _s to GGGGLLLL____CCCCLLLLAAAAMMMMPPPP,
GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT, GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS, or GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE.
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP causes s coordinates to be clamped to the range [0,1]
and is useful for preventing wrapping artifacts when mapping a
single image onto an object. GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE causes s
| 1__ 1__|
coordinates to be clamped to the range ,1- , where N is
|2N 2N|
the size of the texture in the direction of clamping.
GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT causes the integer part of the s coordinate to be
ignored; the GL uses only the fractional part, thereby creating
a repeating pattern. GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS is similar to
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP, but the s coordinate range is adjusted slightly to
ensure that the texture border is fully accessed. Border
texture elements are accessed only if wrapping is set to
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP. Initially, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____SSSS is set to GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT.
Sets the wrap parameter for texture coordinate _t to GGGGLLLL____CCCCLLLLAAAAMMMMPPPP,
GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT, GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS, or GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE. See
Sets the wrap parameter for texture coordinate _r to GGGGLLLL____CCCCLLLLAAAAMMMMPPPP,
GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT, GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS, or GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE. See
the discussion under GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____SSSS. Initially,
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____RRRR is set to GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT.
Sets the wrap parameter for texture coordinate _q to GGGGLLLL____CCCCLLLLAAAAMMMMPPPP,
GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT, or GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS. See the discussion
under GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____SSSS, but note that the _q coordinate wraps
only when the SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee4444DDDD extension is being used.
Initially, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____QQQQ____SSSSGGGGIIIISSSS is set to GGGGLLLL____RRRREEEEPPPPEEEEAAAATTTT.
Specifies the detail texture mode. The permissible values are
GGGGLLLL____AAAADDDDDDDD and GGGGLLLL____MMMMOOOODDDDUUUULLLLAAAATTTTEEEE. See ggggllllDDDDeeeettttaaaaiiiillllTTTTeeeexxxxFFFFuuuunnnnccccSSSSGGGGIIIISSSS for more
Specifies the bias and scale values for the texture. _p_a_r_a_m_s
contains four values that comprise the R, G, B, and A bias
terms (in the case of GGGGLLLL____PPPPOOOOSSSSTTTT____TTTTEEEEXXXXTTTTUUUURRRREEEE____FFFFIIIILLLLTTTTEEEERRRR____BBBBIIIIAAAASSSS____SSSSGGGGIIIIXXXX) or
The GL specification describes a ``complete'' set of mipmap
image arrays as array levels 0 through p, where p is a well-
defined function of the dimensions of the level 0 image
discussed under GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMIIIINNNN____FFFFIIIILLLLTTTTEEEERRRR above. The level 0 image
is the base level (the highest-resolution image, with the
largest dimensions), and the level p image is the maximum level
(the lowest-resolution image, with the smallest dimensions, 1
by 1). To be used for texturing, all the levels of the
complete mipmap set must be loaded.
The SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____lllloooodddd extension allows the base and maximum
levels to be redefined - the base level may be set to a value
greater than zero, and the maximum level may be set to a value
less than p. This permits a large texture to be loaded and
used initially at low resolution, and then at higher
resolutions as more data or texture loading time becomes
available. To be used for texturing, only the levels between
the base and maximum (inclusive) must be loaded. (Other levels
may be loaded, but only the levels from base through maximum
will be used.)
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____BBBBAAAASSSSEEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS, _p_a_r_a_m_s specifies the
base level of the mipmap set for the texture designated by
_t_a_r_g_e_t. The default value is zero.
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS, _p_a_r_a_m_s specifies the
maximum level of the mipmap set for the texture designated by
Many textures have very low energy at high frequencies;
however, the LOD calculation has to assume the opposite. The
result is that mapped textures can appear excessively blurry in
one or more diminensions. The SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____lllloooodddd____bbbbiiiiaaaassss extension
provides user-control over a texture dimension's influence on
the fragment LOD calculation. The bias specifies the number of
LODs (both integer and fractional) which should be added to the
LOD computed for the specified dimension. The fragment's final
LOD is a function of the LODs computed for each texture
dimension.
Some examples where this extension should be used follow.
Textures with non-power-of-two diminensions stretched to the
nearest power-of-two should have a bias between 0 and -1.0,
since the stretching didn't actually add any high frequency
information. Textures from filtered sources such as video are
often overfiltered differently in each dimension, and benefit
from separate negative biases for each dimension. A negative
bias can also be used to reduce one texture dimension's control
on the LOD or bluriness. This is helpful with a texture such as
a road which may appear too blurry when it is repeated many
times in one direction. Finally, a positive bias can be used to
intentionally make a texture appear blurrier.
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLOOOODDDD____BBBBIIIIAAAASSSS____SSSS____SSSSGGGGIIIIXXXX, _p_a_r_a_m_s specifies bias
to add to the intermediate LOD calculated for the s dimension
designated by _t_a_r_g_e_t. The default is 0.
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLOOOODDDD____BBBBIIIIAAAASSSS____TTTT____SSSSGGGGIIIIXXXX, _p_a_r_a_m_s specifies bias
to add to the intermediate LOD calculated for the t dimension
designated by _t_a_r_g_e_t. The default is 0.
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLOOOODDDD____BBBBIIIIAAAASSSS____RRRR____SSSSGGGGIIIIXXXX, _p_a_r_a_m_s specifies bias
to add to the intermediate LOD calculated for the r dimension
Specifies an upper bound for texture coordinate clamping.
Normally texture coordinates are clamped to a maximum of 1.0
when the wrap parameter is set to one of GGGGLLLL____CCCCLLLLAAAAMMMMPPPP,
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS, or GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE. The
SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____ccccoooooooorrrrddddiiiinnnnaaaatttteeee____ccccllllaaaammmmpppp extension allows the user to
specify a maximum clamp of any floating point value in the
range [0,1].
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX, _p_a_r_a_m_s specifies the
maximum coordinate clamp for the s dimension designated by
_t_a_r_g_e_t. The default is 1.0.
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____TTTT____SSSSGGGGIIIIXXXX, _p_a_r_a_m_s specifies the
maximum coordinate clamp for the t dimension designated by
_t_a_r_g_e_t. The default is 1.0.
When _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____RRRR____SSSSGGGGIIIIXXXX, _p_a_r_a_m_s specifies the
maximum coordinate clamp for the r dimension designated by
On some Silicon Graphics machines with hardware texturing,
texel sizes must be a multiple of 16 bits. Most texture
internal formats simply occupy a multiple of 16 bits that is at
least as large as the format requested by the application,
leaving the remaining bits of each texel unused. The GGGGLLLL____DDDDUUUUAAAALLLL____
and GGGGLLLL____QQQQUUUUAAAADDDD____ texture internal formats allow multiple textures
with small texels to be packed into the space of a single 16-
bit texture, thus making full use of texture memory. For
example, an 8-bit luminance texture would normally use a full
16 bits of texture memory for each texel, but if the
application chooses the GGGGLLLL____DDDDUUUUAAAALLLL____LLLLUUUUMMMMIIIINNNNAAAANNNNCCCCEEEE8888____SSSSGGGGIIIISSSS internal
format, then two 8-bit luminance textures can be packed into
the same space.
Some Silicon Graphics machines with hardware texturing do not
have the above texel size restriction, but may benefit from
this extension by loading textures at a faster rate.
When such a texture is active, the application must select
which of the two packed textures will be used for drawing.
_p_a_r_a_m_s specifies which is selected. For GGGGLLLL____DDDDUUUUAAAALLLL____ texture
storage formats, _p_a_r_a_m_s assumes the value 0 or 1. For GGGGLLLL____QQQQUUUUAAAADDDD____
texture storage formats, _p_a_r_a_m_s assumes the value 0, 1, 2, or
3. See ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee1111DDDD, ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee2222DDDD or ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee3333DDDDEEEEXXXXTTTT for
A clipmap's region of interest is determined by some aspect of
the application; for example, it may be derived from an
observer's position in a terrain map. The application defines
the center of the region of interest by executing
ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr with _p_n_a_m_e set to GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____CCCCEEEENNNNTTTTEEEERRRR____SSSSGGGGIIIIXXXX
and _p_a_r_a_m_s pointing to an array with two elements. The first
element is the s coordinate of the center of the region of
interest in the level 0 texture image, and the second element
is the t coordinate of the center. (Note that the position
(s_center,t_center) at level 0 corresponds to the position
(s_center/2,t_center/2) at level 1, and so on as the level
number increases.) The coordinates of the center may be
changed at any time; for example, as an observer moves over a
As the center of a clipmap's region of interest changes, it may
become necessary to load new texture image data into levels 0
through B-1 of the clipmap. This can be accomplished by
executing ggggllllTTTTeeeexxxxSSSSuuuubbbbIIIImmmmaaaaggggeeee2222DDDDEEEEXXXXTTTT for each of the levels. However,
texture memory in addition to that used for the region of
interest is needed to store the new image data in each level.
This memory can be reserved by executing ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr with
_p_n_a_m_e set to GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____FFFFRRRRAAAAMMMMEEEE____SSSSGGGGIIIIXXXX and _p_a_r_a_m_s set to a
floating-point value in the range [0,1]. This reserves
_p_a_r_a_m_s*D_s/2 texels on either side of the region of interest
along the s coordinate, and _p_a_r_a_m_s*D_t/2 texels on either side
of the region of interest along the t coordinate, where D_s and
D_t are the dimensions of the region of interest in the s and t
directions, respectively. This additional memory is best
considered as a ``frame'' around the region of interest, where
_p_a_r_a_m_s specifies the size of the frame as a fraction of the
size of the region of interest. The frame width may be changed
After new texture image data has been loaded into the frame
around a clipmap's region of interest, the region of interest
must be offset to incorporate the new data (and release the
memory occupied by old data that's no longer needed). This is
accomplished by adding offsets to all s and t coordinates used
to access the clipmap. These offsets may force coordinates to
wrap around, so they have the effect of mapping the texture
image and frame onto a torus. This behavior is useful for
continuous roaming through very large texture images. The
offsets are specified by executing ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr with _p_n_a_m_e
set to GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____OOOOFFFFFFFFSSSSEEEETTTT____SSSSGGGGIIIIXXXX and _p_a_r_a_m_s pointing to an
array with two elements. The first element is the offset to be
applied to s coordinates for the level 0 image, and the second
To utilize a texture of greater than GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX
levels of detail, additional parameters are provided to index
into a clipmap contained within a larger, virtual clipmap.
This clipmap is specified by executing ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr with
_p_n_a_m_e set to GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX and _p_a_r_a_m_s
pointing to an array with three elements. The first element,
known as the lod offset, is the level of detail in the virtual
clipmap corresponding to the base level of the smaller clipmap;
the second element is the depth of the smaller clipmap; and the
third element is the depth of the virtual clipmap.
These values can be changed at any time. For example, the
polygons in a scene that span more than
GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX levels can be divided into smaller
groups of polygons, each of which spans fewer than
GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX levels. The
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX parameters are set before
the drawing of each group of polygons to ensure they only need
texels that are available in the active subregion of the
virtual clipmap.
Texture coordinates are relative to the base level of the
virtual clipmap, as are the clipmap center and offset (see
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____CCCCEEEENNNNTTTTEEEERRRR____SSSSGGGGIIIIXXXX and
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____OOOOFFFFFFFFSSSSEEEETTTT____SSSSGGGGIIIIXXXX above) and the minimum and
maximum levels of detail (see GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMIIIINNNN____LLLLOOOODDDD____SSSSGGGGIIIISSSS,
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____LLLLOOOODDDD____SSSSGGGGIIIISSSS, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____BBBBAAAASSSSEEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS, or
Texel address and level of detail generation proceed with the
smaller clipmap precisely as described above for the non-
virtual clipmap. If the level of detail is such that a level
below the lod offset would be indexed, texture magnification is
performed even though the finer texture information may be
resident in texture memory. Likewise, levels of detail coarser
than the lod offset plus the clipmap depth may demonstrate
aliasing. The application must choose
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX parameters to prevent
of the comparison, rather than the texture value itself, is
sent to the filtering stage. If the test passes, the object is
considered to be in shadow; the result of the comparison is 0.
If the test fails, the result is 1. When used with textures
that consist of depth values (internal format
GGGGLLLL____DDDDEEEEPPPPTTTTHHHH____CCCCOOOOMMMMPPPPOOOONNNNEEEENNNNTTTT11116666____SSSSGGGGIIIIXXXX, for example) and a properly-chosen
texture matrix, this can be used to implement shadows. The
comparison operation is enabled by executing ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr
with _p_n_a_m_e set to GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____SSSSGGGGIIIIXXXX and _p_a_r_a_m_s set to the
value GGGGLLLL____TTTTRRRRUUUUEEEE. (It is disabled by using the value GGGGLLLL____FFFFAAAALLLLSSSSEEEE.)
The comparison operation is selected by executing
ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr with _p_n_a_m_e set to
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____OOOOPPPPEEEERRRRAAAATTTTOOOORRRR____SSSSGGGGIIIIXXXX and _p_a_r_a_m_s set to the value
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLEEEEQQQQUUUUAAAALLLL____RRRR____SSSSGGGGIIIIXXXX or GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____GGGGEEEEQQQQUUUUAAAALLLL____RRRR____SSSSGGGGIIIIXXXX. Note
that the texture values are treated as though they range from
0.0 through 1.0, just like depth values, so the r coordinates
chosen by the application must also fall in that range.
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____BBBBAAAASSSSEEEE____LLLLEEEEVVVVEEEELLLL, and GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____LLLLEEEEVVVVEEEELLLL are only available if the
GL version is 1.2 or greater.
Suppose that a program has enabled texturing (by calling ggggllllEEEEnnnnaaaabbbblllleeee with
argument GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____1111DDDD, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____2222DDDD, or GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____3333DDDD) and has set
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMIIIINNNN____FFFFIIIILLLLTTTTEEEERRRR to one of the functions that requires a mipmap. If
either the dimensions of the texture images currently defined (with
previous calls to ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee1111DDDD, ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee2222DDDD, ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee3333DDDD,
ggggllllCCCCooooppppyyyyTTTTeeeexxxxIIIImmmmaaaaggggeeee1111DDDD, or ggggllllCCCCooooppppyyyyTTTTeeeexxxxIIIImmmmaaaaggggeeee2222DDDD) do not follow the proper sequence
for mipmaps (described above), or there are fewer texture images defined
between the base and maximum levels than are needed, or the set of
texture images have differing numbers of texture components, then it is
as if texture mapping were disabled.
Linear filtering accesses the four nearest texture elements only in 2D
textures. In 1D textures, linear filtering accesses the two nearest
texture elements.
A similar consideration applies for clipmaps. The only difference is
that levels 0 through B of the clipmap must have the same dimensions,
rather than varying by a factor of two for each successive level. Note
that the parameter B is never specified explicitly by the application; it
is inferred from the level at which the texture image dimensions stop
changing. (Recall that the dimensions for each level are provided as
arguments to the ggggllllTTTTeeeexxxxIIIImmmmaaaaggggeeee command.)
The maximum number of levels in a clipmap is limited; the limit can be
determined by calling ggggllllGGGGeeeetttt with argument GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX.
The maximum number of levels in a virtual clipmap is limited; the limit
can be determined by calling ggggllllGGGGeeeetttt with argument
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____BBBBAAAASSSSEEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS, and GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS are part of the
SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____lllloooodddd extension. GGGGLLLL____FFFFIIIILLLLTTTTEEEERRRR4444____SSSSGGGGIIIISSSS is part of the
SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____ffffiiiilllltttteeeerrrr4444 extension. GGGGLLLL____PPPPOOOOSSSSTTTT____TTTTEEEEXXXXTTTTUUUURRRREEEE____FFFFIIIILLLLTTTTEEEERRRR____BBBBIIIIAAAASSSS____SSSSGGGGIIIIXXXX and
GGGGLLLL____PPPPOOOOSSSSTTTT____TTTTEEEEXXXXTTTTUUUURRRREEEE____FFFFIIIILLLLTTTTEEEERRRR____SSSSCCCCAAAALLLLEEEE____SSSSGGGGIIIIXXXX are part of the SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____ssssccccaaaalllleeee____bbbbiiiiaaaassss
extension. GGGGLLLL____DDDDUUUUAAAALLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____SSSSEEEELLLLEEEECCCCTTTT____SSSSGGGGIIIISSSS and GGGGLLLL____QQQQUUUUAAAADDDD____TTTTEEEEXXXXTTTTUUUURRRREEEE____SSSSEEEELLLLEEEECCCCTTTT____SSSSGGGGIIIISSSS
are part of the SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____sssseeeelllleeeecccctttt extension.
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____OOOOFFFFFFFFSSSSEEEETTTT____SSSSGGGGIIIIXXXX, and GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX
are part of the SSSSGGGGIIIIXXXX____cccclllliiiippppmmmmaaaapppp extension. GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS is part
of the SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____bbbboooorrrrddddeeeerrrr____ccccllllaaaammmmpppp extension. GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____SSSSGGGGIIIIXXXX and
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOMMMMPPPPAAAARRRREEEE____OOOOPPPPEEEERRRRAAAATTTTOOOORRRR____SSSSGGGGIIIIXXXX are part of the SSSSGGGGIIIIXXXX____sssshhhhaaaaddddoooowwww extension.
GGGGLLLL____SSSSHHHHAAAADDDDOOOOWWWW____AAAAMMMMBBBBIIIIEEEENNNNTTTT____SSSSGGGGIIIIXXXX is part of the SSSSGGGGIIIIXXXX____sssshhhhaaaaddddoooowwww____aaaammmmbbbbiiiieeeennnntttt extension.
GGGGLLLL____PPPPIIIIXXXXEEEELLLL____TTTTEEEEXXXX____GGGGEEEENNNN____QQQQ____CCCCEEEEIIIILLLLIIIINNNNGGGG____SSSSGGGGIIIIXXXX, GGGGLLLL____PPPPIIIIXXXXEEEELLLL____TTTTEEEEXXXX____GGGGEEEENNNN____QQQQ____FFFFLLLLOOOOOOOORRRR____SSSSGGGGIIIIXXXX, and
GGGGLLLL____PPPPIIIIXXXXEEEELLLL____TTTTEEEEXXXX____GGGGEEEENNNN____QQQQ____RRRROOOOUUUUNNNNDDDD____SSSSGGGGIIIIXXXX are part of the SSSSGGGGIIIIXXXX____iiiimmmmppppaaaacccctttt____ppppiiiixxxxeeeellll____tttteeeexxxxttttuuuurrrreeee
extension. GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLOOOODDDD____BBBBIIIIAAAASSSS____SSSS____SSSSGGGGIIIIXXXX, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLOOOODDDD____BBBBIIIIAAAASSSS____TTTT____SSSSGGGGIIIIXXXX, and
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLOOOODDDD____BBBBIIIIAAAASSSS____RRRR____SSSSGGGGIIIIXXXX are part of the SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____lllloooodddd____bbbbiiiiaaaassss
extension. GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____TTTT____SSSSGGGGIIIIXXXX, and
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX are part of the SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____ccccoooooooorrrrddddiiiinnnnaaaatttteeee____ccccllllaaaammmmpppp
extension. See ggggllllIIIInnnnttttrrrroooo for more information about using extensions.
EEEERRRRRRRROOOORRRRSSSS
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_a_r_g_e_t or _p_n_a_m_e is not one of the
accepted defined values.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _p_a_r_a_m_s should have a defined constant
value (based on the value of _p_n_a_m_e) and does not.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____OOOOPPPPEEEERRRRAAAATTTTIIIIOOOONNNN is generated if ggggllllTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr is executed between
the execution of ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if an attempt is made to set
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____BBBBAAAASSSSEEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS or GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS to a negative
value.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____CCCCEEEENNNNTTTTEEEERRRR____SSSSGGGGIIIIXXXX
and either of the two values specified by _p_a_r_a_m_s is negative.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____OOOOFFFFFFFFSSSSEEEETTTT____SSSSGGGGIIIIXXXX
and either of the two values specified by _p_a_r_a_m_s is negative.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _p_n_a_m_e is
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX and any of the three values
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _p_n_a_m_e is
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX and the sum of the first two values
specified by _p_a_r_a_m_s is greater than the third.
GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _p_n_a_m_e is GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX,
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____TTTT____SSSSGGGGIIIIXXXX, or GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX and _p_a_r_a_m_s is
ggggllllGGGGeeeettttIIIInnnntttteeeeggggeeeerrrrvvvv with argument GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX
ggggllllGGGGeeeettttIIIInnnntttteeeeggggeeeerrrrvvvv with argument GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX
The SSSSGGGGIIIIXXXX____cccclllliiiippppmmmmaaaapppp extension is supported only on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems.
The following restrictions apply:
1. For best performance, the ``breakpoint'' clipmap level (B) must
be loaded before any other level. The implementation derives
the size of the clipmap from the size of this level, so loading
this level first permits efficient allocation of texture memory.
2. Clipmaps must be square.
3. GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____SSSS and GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____WWWWRRRRAAAAPPPP____TTTT must be set to
4. It is more efficient to set clipmap attributes that affect
texture memory allocation (such as
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____FFFFRRRRAAAAMMMMEEEE____SSSSGGGGIIIIXXXX) before loading the first level of
parameters have been defined) use texture memory inefficiently.
Each level of detail allocates a region of texture memory the
same size as that of a clipped level. Any clipmap whose depth
is less than GGGGLLLL____MMMMAAAAXXXX____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX should avoid this by not
specifying GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX parameters. An
application can not readback the texture levels whose size is
smaller than that of the clipped level.
6. The depth of the virtual clipmap given in
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCLLLLIIIIPPPPMMMMAAAAPPPP____VVVVIIIIRRRRTTTTUUUUAAAALLLL____DDDDEEEEPPPPTTTTHHHH____SSSSGGGGIIIIXXXX must be defined before any
texture levels are downloaded, and it can not be changed once it
has been specified. If the application tries to change the
virtual depth, no action is taken.
7. When using virtual clipmaps, an application should not
overcommit texture memory. Doing so will result in undefined
On RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems
GGGGLLLL____DDDDEEEETTTTAAAAIIIILLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS must be less than or equal to 4.
On HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt systems, the following restrictions
apply to detail texturing:
1. When detail texturing, the GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMIIIINNNN____FFFFIIIILLLLTTTTEEEERRRR must specify
mipmapping; if not, the detail will be effectively disabled.
2. When specifying GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAGGGG____FFFFIIIILLLLTTTTEEEERRRR, the only mode supported
is GGGGLLLL____LLLLIIIINNNNEEEEAAAARRRR____DDDDEEEETTTTAAAAIIIILLLL____SSSSGGGGIIIISSSS.
3. When specifying GGGGLLLL____DDDDEEEETTTTAAAAIIIILLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMOOOODDDDEEEE____SSSSGGGGIIIISSSS, the only mode
supported is GGGGLLLL____AAAADDDDDDDD.
4. When specifying GGGGLLLL____DDDDEEEETTTTAAAAIIIILLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS, any values outside
of the range [-2..-6] will be clamped to the limits of that
range.
Detail texturing acts as if the mipmap stack were extended by a number of
levels equal to the absolute value of the GGGGLLLL____DDDDEEEETTTTAAAAIIIILLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____LLLLEEEEVVVVEEEELLLL____SSSSGGGGIIIISSSS
parameter. The number of normal mipmap levels plus the number of detail
levels must not exceed the maximum number of levels that can be supported
on the hardware. For example, on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems the maximum
number of levels is 15. A detail texture at level -4 could be supported
on a base texture of size 2K (that is, a base texture with 11 levels) but
not on a base texture that is larger than 2K (one with 12 or more
levels). Failure to observe this constraint causes detail textures to
swim or jitter.
OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems use the same hardware for the SSSSGGGGIIIISSSS____ddddeeeettttaaaaiiiillll____tttteeeexxxxttttuuuurrrreeee
extension and the SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____ssssccccaaaalllleeee____bbbbiiiiaaaassss extension. If the texture
magnification function is one of the detail texture functions, any user-
supplied GGGGLLLL____PPPPOOOOSSSSTTTT____TTTTEEEEXXXXTTTTUUUURRRREEEE____FFFFIIIILLLLTTTTEEEERRRR____SSSSCCCCAAAALLLLEEEE____SSSSGGGGIIIIXXXX or
GGGGLLLL____PPPPOOOOSSSSTTTT____TTTTEEEEXXXXTTTTUUUURRRREEEE____FFFFIIIILLLLTTTTEEEERRRR____SSSSCCCCAAAALLLLEEEE____SSSSGGGGIIIIXXXX parameters will be ignored.
The SSSSGGGGIIIIXXXX____sssshhhhaaaaddddoooowwww extension is supported only on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems.
The SSSSGGGGIIIIXXXX____sssshhhhaaaaddddoooowwww____aaaammmmbbbbiiiieeeennnntttt extension is supported only on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy
systems.
The SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____lllloooodddd extension is supported on OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems and
HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt systems. On HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm
IIIImmmmppppaaaacccctttt systems, however, setting the GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____LLLLOOOODDDD____SSSSGGGGIIIISSSS will have no
effect.
The SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____lllloooodddd____bbbbiiiiaaaassss extension is supported only on OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo
systems and IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems.
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS is supported only on OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems and
HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt systems.
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE____SSSSGGGGIIIISSSS is supported only on OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems,
IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems, and OOOO2222 systems.
Texture borders are not supported on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems, so the
border width should always be zero. Applications should use the texture
wrap mode GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____EEEEDDDDGGGGEEEE____SSSSGGGGIIIISSSS to obtain behavior similar to that of
borders.
GGGGLLLL____CCCCLLLLAAAAMMMMPPPP and GGGGLLLL____CCCCLLLLAAAAMMMMPPPP____TTTTOOOO____BBBBOOOORRRRDDDDEEEERRRR____SSSSGGGGIIIISSSS modes are not supported on OOOO2222
systems, and when set will produce the same clamping result as the
On IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems, if the post-texture filter scale and bias
values are set to values other than the defaults, they are limited to the
range [0.0, 1.0). (note: this range excludes 1.0.) The
SSSSGGGGIIIIXXXX____tttteeeexxxxttttuuuurrrreeee____ssssccccaaaalllleeee____bbbbiiiiaaaassss extension is not supported on RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee,
RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems or on HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt
systems.
The SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____sssseeeelllleeeecccctttt extension is supported only on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy
systems, HHHHiiiigggghhhh IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt on Octane systems, and HHHHiiiigggghhhh
IIIImmmmppppaaaacccctttt and MMMMaaaaxxxxiiiimmmmuuuummmm IIIImmmmppppaaaacccctttt on Indigo2 systems with the TRAM option card.
The SSSSGGGGIIIISSSS____tttteeeexxxxttttuuuurrrreeee____ffffiiiilllltttteeeerrrr4444 extension is supported only on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy
systems.
On IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems, GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if the value of
the argument n to the command ggggllllTTTTeeeexxxxFFFFiiiilllltttteeeerrrrFFFFuuuunnnnccccSSSSGGGGIIIISSSS does not equal the
value of the implementation dependent constant Size, which can be
determined by calling ggggllllGGGGeeeettttTTTTeeeexxxxPPPPaaaarrrraaaammmmeeeetttteeeerrrr with argument
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____FFFFIIIILLLLTTTTEEEERRRR4444____SSSSIIIIZZZZEEEE____SSSSGGGGIIIISSSS. This restriction will be removed in a
future release.
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____TTTT____SSSSGGGGIIIIXXXX, and
GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____MMMMAAAAXXXX____CCCCLLLLAAAAMMMMPPPP____SSSS____SSSSGGGGIIIIXXXX are only supported on OOOOccccttttaaaannnneeee2222 VVVVPPPPrrrroooo systems.